package com.fosdata.dpm.config;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;

@Configuration
public class GuavaCacheConfig {

    /**
     * 定义一个 Guava Cache 实例
     * 配置：过期时间 10 分钟，最大容量 1000 条
     */
    @Bean(name = "userCache")
    public Cache<String, String> userCache() {
        return CacheBuilder.newBuilder()
                .expireAfterWrite(3, TimeUnit.MINUTES) // 写入后过期时间
                // .expireAfterAccess(5, TimeUnit.MINUTES) // 访问后过期时间（二选一）
                .maximumSize(5000) // 最大缓存条目数
                .concurrencyLevel(4) // 并发级别（建议与 CPU 核心数匹配）
                .recordStats() // 开启统计（可选，用于监控缓存命中率等）
                .build();
    }
}